#pragma once

namespace Alice
{
    class Material;
    class CGICommandListBase;
    class MaterialInterface;
    class MaterialShared;
    class MaterialRenderProxy
    {
    public:
        virtual const MaterialShared* GetMaterialNoFallback() const {return nullptr;}
        virtual const MaterialRenderProxy* GetFallback(){return nullptr;}
        virtual MaterialInterface* GetMaterialInterface() const { return nullptr; }
        virtual void InitRHI(CGICommandListBase& inCGICmdList);
        virtual void ReleaseRHI();
        virtual void ReleaseResource();
    };
    class DefaultMaterialInstance:public MaterialRenderProxy
    {
    public:
        DefaultMaterialInstance(Material*inMaterial);
        Material* mMaterial;
    };
}
